<?php
/*
Cette classe est la classe mere de toutes le factory.Elle oblige la redefinition de methode qui retourneront un type concret dans les classes filles
(Implementation du pattern Abstract Factory.)
Ici seul l'acces mysql est defini mais si on est amene a migrer de base on ajoutera une constante PosgreSQL par exemple et on tetournera une factory concrate posgr
*/
abstract class AbstractDAOFactory{

	const MYSQL = 1;

	//oblige la redefinition pour les classes filles
	abstract protected function getClientDAO();
	abstract protected function getUtilisateurDAO();
	abstract protected function getFilmDAO();
	abstract protected function getSeanceDAO();
	abstract protected function getReservationDAO();
	abstract protected function getLigneReservationDAO();
	abstract protected function getSalleDAO();
	
	    //retourne la factory concrete
		public static function getDaoFactory($val){
			switch ($val) {
				case self::MYSQL:
				$daoFactory = new DaoFactoryMySql();
				break;
				
			}
		return $daoFactory;
		}

}

	
	

?>